1. The Field of the Invention
This invention relates to computers and software generally and, more particularly, to novel systems and methods for remotely initiating and managing the installation process for software on computers in a network.
2. The Background Art
In today""s work environment the computer plays an essential role. Most people in the work place have a computer on their desk and work with it everyday. Computer networks are often utilized to connect the many computers used in each work environment. Networks enable computers to communicate with each other permitting coworkers to send email to one another, to print on a network printer, to run programs that require network resources, etc.
Many different technologies are used with computer networks, from different types of computers to different operating systems. Programs, or applications, like word processors or spreadsheets, facilitate much of the work done by people today. An operating system is a piece of software that runs on a computer and enables a program to run on that computer. In other words, typically programs know how to talk to the operating system, and the operating system knows how to talk to the computer and tell it what to do. In this way, the operating system acts as a translator between the applications and the computer hardware.
Operating systems and programs are often installed on a computer before they are executed, or run, by that computer. In a typical installation, a computer user actively steps through the installation process as it takes place, which usually requires the user to insert disks and/or CD-ROMs at specified times and answer certain questions so that the installation program knows how the user wishes to configure the new program and/or the operating system.
Typically, system administrators run networks and take care of the software on the computers in the network. Depending on the size of the network and the number of software items installed, installing new software can take a lot of time. For example, if a network included 50 computers and all the computers on the network were to be upgraded to a new operating system, the system administrator may sit down in front of each of the 50 computers and go through the installation process. If each installation took 1 hour, it may take the system administrator 50 hours or more to upgrade the network""s computers to this new operating system.
To somewhat reduce the burden on the installer, the files to be installed may first be installed onto the network server. The installer may then install the new software on each client computer, but instead of having to swap disks and/or CD-ROMs into and out of the client computer, the installer may copy necessary data from the server to the client machine. Although this method saves some time of the system administrator, the administrator still typically walks through the installation process manually at that computer.
Another method developed to help in installing software remotely combines all files that are being remotely installed into a single data stream, sends this single data stream over the network to the remote computer system, and separates the data stream into the original files on the remote system. However, this method is apparently directed toward installations involving the basic storing of files. Many installations require substantial user input throughout the installation process to complete the installation and configuration of the new software.
Not only is there a need for a better, less time consuming way to install software on a network, but there is a great need for such an improvement in the software testing environment. This may be especially true where the software being tested is integrally related to a computer network in that communication over a network with other components is necessary to fully test the new software.
Testing new network operating systems, or servers, may become easier if there were an improvement in installing such software. In many corporate environments, several networks are joined together facilitating communication between the separate networks. Often these networks, specifically the servers, are organized into a tree structure. Each server in such a tree may be referred to as a node. At the top of this tree structure lies a root node or root. The interconnected servers below the root node spread out in a branching type of pattern forming a tree, or a web-like structure.
The tree is a logical structure. There is also a physical layout of servers: partitions. In the logical tree there are objects that represent the servers. As stated, the tree has a root. The root partition could reside on any physical server. Portions of the logical tree are stored in various partitions. This allows changes to be made for optimizing performance. Partitions may be read-only, or they may be read-write. In addition, there is a master partition. The logical tree, partitions, the type of partitions, and the like, all need to be decided before or during the installation of the network operating system and/or before or during the installation and configuration of the logical tree structure. This considerable amount of configuration may make testing the network software and the tree structure a very lengthy process because of the time and effort it takes to set up the network and tree structure.
Organizational logical trees formed like this are useful for companies for several reasons. A company that is spread out across a large area would benefit greatly from the concept of logical trees and the proper layout of physical partitions. One location may only need to know the organization of another area and may only need a local copy of the partition, or partitions, from other areas. This can greatly increase the performance of the network. A large company with many locations may organize physical partitions in a way that optimizes use of their logical tree.
Network operating systems and logical tree structures serve important roles in the computer systems used in the workplace. In order to adequately test the server and networking software that is used in such systems, networking software companies need to set up many servers and logical trees themselves. To adequately test the server software, trees of several hundred servers may be required. In some testing environments these trees of servers need to be set up and tested quickly so that a new tree of servers may be constructed to run another set of tests. The time required for a tester to install all of these servers and configure them in a tree could take a considerable amount of time. Because of the complexities of a new server being installed, a person generally must attend to a server installation. This consumes a considerable amount of resources and also slows down the testing of networking software and of logical trees associated with the networking software.
In view of the foregoing, it is a primary object of the present invention to provide apparatus and methods for remotely initiating and managing the installation process for software on computers in a network.
It is also an object of the invention to provide for remotely installing software requiring an interactive installation process.
Further, it is also an object of the invention to provide apparatus and methods for remotely installing a new operating system.
It is still a further object of the invention to enable the remote installation and configuration of a network operating system.
In addition, it is an object of the invention to provide apparatus and methods whereby a remote computer executing the newly installed network operating system is capable of completing the installation and configuration of the new network operating system.
Consistent with the foregoing objects, and in accordance with the invention as embodied and broadly described herein, a method and apparatus for remote installation of software are disclosed in one embodiment of the present invention as including a first processor programmed to execute a master process effective to communicate with and control a slave process; a storage device operably connected to the first processor to store first configuration data; a second processor operably connected to the first processor for executing the slave process effective to communicate with and be controlled by the master process, and programmed thereby to execute an installation program; and a memory device operably connected to the first processor to store inputs to and outputs from the slave process.
The memory device may include a first memory device operably connected to the first processor and a second memory device operably connected to the second processor. Additionally, a second storage device may be operably connected to the second processor to store the installation program and modules installable thereby.
To make the master process aware of its accessibility, the slave process comprises an advertising module for advertising availability of the slave process. The advertising may be accomplished according to the Standard Advertising Protocol. Accordingly, the data structures contained in the first memory device and/or on the storage device may include a slave list reflecting addresses of available slave processes. The data structures may further comprise the configuration data for configuration of the master process.
The slave process may include an input module for entering input received from the master process to the installation program. An output module may also be included within the slave process for receiving output from the installation program and sending the output to the master process.
Communications between the master process and the slave process may be achieved through a communication link operably interposed between the first processor and the second processor. The communication link comprises a first communication module operably associated with the master process, a second communication module operably associated with the slave process, and an electronic connection between the first communication module and the second communication module.
The memory and/or storage utilized with the present invention contains data structures used in remotely installing software. The data structures may include the master process, the first communication module, an operating system executable to communicate instructions from the master process module to the processor, the slave process, the second communication module, and the install program to effect installation of the software.
The first memory device may store the master process module and the first communication module, and the second memory device may store the slave process module and the second communication module. The communication modules may be client communication modules for communicating with a network server module executable to communicate over a network.
A method for remotely installing software in accordance with an embodiment of the invention may include installing an operating system on a first computer comprising the first processor; installing an operating system on a second computer comprising the second processor; loading the slave process on the second processor; executing the master process on the first processor; establishing the communication link between the master process and the slave process; enslaving, by the master process, the slave process to program the second processor; and initiating, by the second processor, the installation of new software on the second computer by relaying inputs to the installation program through the slave process from the master process and relaying outputs to the master process through the slave process from the installation program. Before installing the operating system on the second computer, the hard drive (or the second storage device) of the second computer may be partitioned to facilitate the installation of a network server.
The slave process may be emancipated by providing an emancipation module in the second computer. Emancipating the slave process may include interrupting the installation to cease communication of instructions from the master process, and completing, by the emancipation module, the installation of the new software on the second computer.
The new software to be installed may comprise a network server comprising a set of instructions. In installing a network server the method for remotely installing the server may include installing a subset of the instruction set and interrupting the installation of the network server when the subset is fully executable by the second processor.
Before the new server is started, the slave process may be directed to modify server configuration files to load the emancipation module containing a network master process and a network slave process. The network master process and the network slave process may be linked to form an emancipated slave. Subsequently, when the network operating system is loaded on the second computer, the network operating system, in accordance with the server configuration files, loads the emancipation module and may further execute the network master process on the second computer.
The emancipated slave may initiate a remainder process including completing configuration and installation of the server, which may comprise installing in a network directory services tree an object corresponding to the network server. Inputs may be relayed to the remainder process by the network slave process, and outputs may be relayed to the network master process from the network slave process.